#include "frame_thread_pool.h"

int threadPoolInit(threadPool_t *threadPool, int workerNum, MYSQL *mmysql) {
	tidArrInit(&threadPool->tidArr, workerNum);
	taskQueueInit(&threadPool->taskQueue);
	threadPool->exitFlag = 0;
	pthread_mutex_init(&threadPool->mutex, NULL);
	pthread_cond_init(&threadPool->cond, NULL);
	threadPool->mysql = mmysql;

	return 0;
}

void threadPoolFree(threadPool_t *threadPool) {
	if (threadPool == NULL) {
		return;  // 防御性编程
	}

	// 1. 等待所有工作线程退出（需在外部join线程）
	// 注意：实际线程回收应在外部调用pthread_join完成

	// 2. 销毁同步原语
	pthread_mutex_destroy(&threadPool->mutex);
	pthread_cond_destroy(&threadPool->cond);

	// 3. 释放子模块资源
	tidArrFree(&threadPool->tidArr);    // 释放线程#include "directory_operation.h"
	taskQueueFree(&threadPool->taskQueue);  // 释放任务队列
}

int buildUserSpace() {
	if (access(userSpace, F_OK) != 0) {
		mkdir(userSpace, 0777);
	}
	return 1;
}
